/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BancoDados;

import Sistema.Defs;
import Utilidades.UtilityDB;
import Utilidades.UtilityTime;
import java.sql.ResultSet;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;

/**
 * Created on : May 18, 2011, 7:55:10 PM
 * @author diogo
 */
public class Cliente extends Dado implements Entidade {

	private int CodCliente;
	private String NomeCli;
	private String Fantasia;
	private String Endereco;
	private String Bairro;
	private String Cidade;
	private String UF;
	private String FoneFixo;
	private String FoneFax;
	private String FoneCelular;
	private String Email;
	private String HomePage;
	private String Tipo;
	private Date DataNasctoAbertura;
	private String CPFCNPJ;
	private String RGIE;

	// <editor-fold defaultstate="collapsed" desc="Gets/Constructors">

	public String getBairro() {
		return Bairro;
	}

	public String getCPFCNPJ() {
		return CPFCNPJ;
	}

	public String getCidade() {
		return Cidade;
	}

	public int getCodCliente() {
		return CodCliente;
	}

	public Date getDataNasctoAbertura() {
		return DataNasctoAbertura;
	}

	public String getEmail() {
		return Email;
	}

	public String getEndereco() {
		return Endereco;
	}

	public String getFantasia() {
		return Fantasia;
	}

	public String getFoneCelular() {
		return FoneCelular;
	}

	public String getFoneFax() {
		return FoneFax;
	}

	public String getFoneFixo() {
		return FoneFixo;
	}

	public String getHomePage() {
		return HomePage;
	}

	public String getNomeCli() {
		return NomeCli;
	}

	public String getRGIE() {
		return RGIE;
	}

	public String getTipo() {
		return Tipo;
	}

	public String getUF() {
		return UF;
	}

	public Cliente(int CodCliente, String NomeCli, String Fantasia, String Endereco, String Bairro, String Cidade, String UF, String FoneFixo, String FoneFax, String FoneCelular, String Email, String HomePage, String Tipo, Date DataNasctoAbertura, String CPFCNPJ, String RGIE) {
		this.CodCliente = CodCliente;
		this.NomeCli = NomeCli;
		this.Fantasia = Fantasia;
		this.Endereco = Endereco;
		this.Bairro = Bairro;
		this.Cidade = Cidade;
		this.UF = UF;
		this.FoneFixo = FoneFixo;
		this.FoneFax = FoneFax;
		this.FoneCelular = FoneCelular;
		this.Email = Email;
		this.HomePage = HomePage;
		this.Tipo = Tipo;
		this.DataNasctoAbertura = DataNasctoAbertura;
		this.CPFCNPJ = CPFCNPJ;
		this.RGIE = RGIE;
	}

	public Cliente() {
	}
	
	// </editor-fold>

	
	
	@Override
	public String getTableName() {
		return "Cliente";
	}

	@Override
	public String[] getPrimaryKey() {
		return new String[]{"CodCliente"};
	}

	@Override
	public String[] getColumns() {
		return new String[]{
					"NomeCli",
					"Fantasia",
					"Endereco",
					"Bairro",
					"Cidade",
					"UF",
					"FoneFixo",
					"FoneFax",
					"FoneCelular",
					"Email",
					"HomePage",
					"Tipo",
					"DataNasctoAbertura",
					"CPFCNPJ",
					"RGIE"
				};
	}

	public static boolean Inserir(
			String NomeCli, String Fantasia,
			String Endereco, String Bairro, String Cidade, String UF,
			String FoneFixo, String FoneFax, String FoneCelular,
			String Email, String HomePage, String Tipo,
			Date DataNasctoAbertura, String CPFCNPJ, String RGIE,
			String Login, String Senha) {



		String SQL = UtilityDB.CallFunction("fn_inserir_Clientes",
				NomeCli,
				Fantasia,
				Endereco,
				Bairro,
				Cidade,
				UF,
				FoneFixo,
				FoneFax,
				FoneCelular,
				Email,
				HomePage,
				Tipo,
				DataNasctoAbertura,
				CPFCNPJ,
				RGIE,
				Login,
				Senha
				);

		//int linhasAfetadas = c.cadastrar(SQL);
		boolean inseriu = false;
		try {
			//System.out.println("SQL: " + SQL);
			ResultSet rs = c.consultar(SQL);
			rs.next();
			System.out.println("INSERIU? " + rs.getBoolean(1));
			inseriu = rs.getBoolean(1);
		} catch (Exception e) {
			e.printStackTrace();
			inseriu = false;
		}
		return inseriu;
		/*
		Cliente cli = new Cliente();
		String[] colunas = cli.getColumns();
		int x = 0;
		//fn_inserir_Clientes
		String SQL = UtilityDB.CreateInsert(cli.getTableName(),
				colunas[x++], NomeCli,
				colunas[x++], Fantasia,
				colunas[x++], Endereco,
				colunas[x++], Bairro,
				colunas[x++], Cidade,
				colunas[x++], UF,
				colunas[x++], FoneFixo,
				colunas[x++], FoneFax,
				colunas[x++], FoneCelular,
				colunas[x++], Email,
				colunas[x++], HomePage,
				colunas[x++], Tipo,
				colunas[x++], DataNasctoAbertura,
				colunas[x++], CPFCNPJ,
				colunas[x++], RGIE);

		int linhasAfetadas = c.cadastrar(SQL);
		return linhasAfetadas > 0;
		//*/
	}

	public static boolean Inserir(HttpServletRequest request) {
		String[] colunas = new Cliente().getColumns();
		int x = 0;

		String NomeCli =	request.getParameter(colunas[x++]);
		String Fantasia =	request.getParameter(colunas[x++]);
		String Endereco =	request.getParameter(colunas[x++]);
		String Bairro =		request.getParameter(colunas[x++]);
		String Cidade =		request.getParameter(colunas[x++]);
		String UF =			request.getParameter(colunas[x++]);
		String FoneFixo =	request.getParameter(colunas[x++]);
		String FoneFax =	request.getParameter(colunas[x++]);
		String FoneCelular = request.getParameter(colunas[x++]);
		String Email =		request.getParameter(colunas[x++]);
		String HomePage =	request.getParameter(colunas[x++]);
		String Tipo =		request.getParameter(colunas[x++]);
		Date DataNasctoAbertura = UtilityTime.ToDate(request.getParameter(colunas[x++]), Defs.divisorData);
		String CPFCNPJ =	request.getParameter(colunas[x++]);
		String RGIE =		request.getParameter(colunas[x++]);
		String Login =			request.getParameter("Login");
		String Senha =			request.getParameter("Senha");


		return Inserir(NomeCli, Fantasia, Endereco, Bairro, Cidade, UF, FoneFixo, FoneFax, FoneCelular, Email, HomePage, Tipo, DataNasctoAbertura, CPFCNPJ, RGIE, Login, Senha);
	}

	/**
	 * retorna true se ja tem o CPFCNPJ
	 * @param CPFCNPJ
	 * @return
	 */
	public static boolean ExisteCPFCNPJ(String CPFCNPJ){
		ResultSet rs = null;
		boolean resultado = true;
		//fn_existe_profissional_CPF
		String SQL = UtilityDB.CallFunction("fn_existe_cliente_cpfcnpj", CPFCNPJ);
		try {
			rs = c.consultar(SQL);
			rs.next();
			resultado = rs.getBoolean(1);
		} catch (Exception e) {
			resultado = true;
			e.printStackTrace();
		}

		return resultado;
	}
}
